'use strict';
const dayjs = require("dayjs");
const {getDefaultModelConfig} = require("../../utils/common");
const { formatDate } = require("../../utils/index");

module.exports = app => {
    const { STRING, INTEGER, DATE, TINYINT, TEXT } = app.Sequelize;
    return app.model.define(
        'YouthHostel',
        {
            id: {type: INTEGER, primaryKey: true, autoIncrement: true},
            name: STRING(50), // 姓名
            id_card: STRING(18), // 身份证号码
            gender: {type: STRING, defaultValue: '', comment: '性别：男，女'}, // 性别
            phone: STRING(11), // 联系电话
            graduation_date: {
                type: DATE,
                get() {
                    return formatDate(this.getDataValue('graduation_date'), 'YYYY-MM-DD');
                }
            }, // 毕业时间
            school: STRING(100), // 毕业院校
            major: STRING(100), // 专业
            education: STRING(50), // 学历
            address: STRING(255), // 常住地址
            emergency_phone: STRING(11), // 紧急联系电话
            check_in_start_date: {
                type: DATE,
                get() {
                    return formatDate(this.getDataValue('check_in_start_date'), 'YYYY-MM-DD');
                }
            }, // 申请入住开始日期
            check_in_end_date: {
                type: DATE,
                get() {
                    return formatDate(this.getDataValue('check_in_end_date'), 'YYYY-MM-DD');
                }
            }, // 申请入住结束日期
            purpose: TEXT, // 申请入住事由
            id_card_front_photo: STRING(255), // 身份证正面照片
            id_card_back_photo: STRING(255), // 身份证反面照片
            graduation_cert_photo: STRING(255), // 毕业证书或教育部学历证书电子注册备案表
            degree_cert_photo: STRING(255), // 学位证照片
            invitation_material_photo: STRING(255), // 在企业求职面试现场照片
            status: {type: TINYINT, defaultValue: 0, comment: '审核状态：0-待审核，1-审核通过，2-审核拒绝'}, // 审核状态
            review_remark: TEXT, // 审核备注
            reviewer: STRING(50), // 审核人
            ...getDefaultModelConfig(app)
        },
        {
            tableName: 'youth_hostel',
            timestamps: true,
            createdAt: 'create_time',
            updatedAt: 'update_time'
        }
    );
};
